package G.二叉搜索树;

public class _108_将有序数组转换为二叉搜索树 {
    /**
     * 树中解决过--因为已经是升序数组 所以 为了高度差不超过1 所以采用数组中间数为根结点
     * 左右数组分别再递归
     * @param nums
     * @return
     */
    public TreeNode sortedArrayToBST(int[] nums) {

        return helper(nums,0,nums.length-1);
    }

    //因为数组nums是不会变得 所以只能通过left和right指针来获取中间值
//    public Z.dailyExercise._0223.TreeNode helper(Z.dailyExercise._0223.TreeNode root,int[] nums){
//        if (nums)
//    }

    public TreeNode helper(int[] nums,int left,int right){
        if (left>right){
            return null;
        }

        //int mid =(int) Math.ceil((right-left)/2);//这种写法默认left为0了 如果不是0 结果就不对了
        int mid = (right+left+1)/2;

        TreeNode node = new TreeNode(nums[mid]);

        node.left = helper(nums,left,mid-1);
        node.right = helper(nums,mid+1,right);

        return node;
    }
}
